// index.js
Page({
  data: {
    showTranslation: false,
    showExample: false,
    enterTime: 0, // 进入时间戳
    currentWord: {
      word: '',
      pronunciation: '',
      translation: '',
      sound_url: '',
      example: {
        en: '',
        cn: ''
      }
    },
    currentWordIndex: 0
  },
  onShow: function() {
    // 记录进入时间
    this.setData({
        enterTime: Date.now()
    })
    // 先获取原有存储值，用wx.getStorageSync
    const existingWords = JSON.parse(wx.getStorageSync('wordsToStudy') || '[]')
    console.log(existingWords)
    // 如果现存单词数量不足0个，才调用云函数获取
    if (existingWords.length <= 0) {
      // 调用云函数获取单词
      this.getWordsToStudyFuc();
    } else {
      // 从本地存储获取单词
      this.setData({
        currentWord: existingWords[this.data.currentWordIndex]
      })
    }
  },
  // 调用云函数获取单词
  async getWordsToStudyFuc() {
    try {
      // 调用云函数wordsFunctions的getWordsToStudy，用于获取待学习的单词（一次获得100个）
      const result = await wx.cloud.callFunction({
        name: 'wordsFunctions', 
        data: {
          type: 'getWordsToStudy'
        }
      })
      if (result.result && result.result.success) {
        const existingWords = JSON.parse(wx.getStorageSync('wordsToStudy') || '[]')
        // 将res.result.data附加到本地存储的末尾，不用...语法，用concat方法
        const updatedWords = existingWords.concat(result.result.data)
        // 用wx.setStorageSync保存
        wx.setStorageSync('wordsToStudy', JSON.stringify(updatedWords))
        this.setData({
          currentWord: updatedWords[this.data.currentWordIndex]
        })
      } else {
        console.error('获取单词失败:', result.result.message);
      }
    } catch (error) {
      console.error('调用云函数失败:', error);
    }
  },
  // 调用云函数标记单词为已掌握
  async studyWordFuc() {
    try {
      // 调用云函数wordsFunctions的studyWord，用于标记单词为已掌握
      const result = await wx.cloud.callFunction({
        name: 'wordsFunctions', 
        data: {
          type: 'studyWord',
          word: this.data.currentWord.word
        }
      })
      if (result.result && result.result.success) {
        wx.showToast({
          title: '已标记为掌握',
          icon: 'success'
        });
        this.refreshDataAfterStudy();
      } else {
        console.error('标记单词失败:', result.result.message);
      }
    } catch (error) {
      console.error('调用云函数失败:', error);
    }
  },
  onHide: function() {
    // 计算停留时长（分钟）
    const duration = Math.floor((Date.now() - this.data.enterTime) / 60000)
    
    // 获取原有存储值并累加
    const current = wx.getStorageSync('todayStudyMin') || 0
    wx.setStorageSync('todayStudyMin', current + duration)
  },
  onUnload: function() {
    // 页面卸载时也触发计算（用户直接返回）
    this.onHide()
  },
  // 返回上一页
  goBack: function() {
    wx.navigateBack();
  },

  // 播放发音
  playSound: function() {
    if (this.data.currentWord.sound_url) {
      const innerAudioContext = wx.createInnerAudioContext();
      innerAudioContext.src = this.data.currentWord.sound_url;
      innerAudioContext.play();
    }
  },
  
  // 显示翻译
  toggleTranslation: function() {
    this.setData({
      showTranslation: true
    });
  },
  
  // 显示例句
  toggleExample: function() {
    this.setData({
      showExample: true
    });
  },
  
  // 上一个单词
  prevWord: function() {
    // 从本地存储获取单词
    const existingWords = JSON.parse(wx.getStorageSync('wordsToStudy') || '[]')
    // 先判断是否还有上一个单词
    if (this.data.currentWordIndex > 0) {
      this.resetState();
      const idx = this.data.currentWordIndex - 1;
      this.setData({
        currentWordIndex: idx,
        currentWord: existingWords[idx]
      })
    } else {
      wx.showToast({
        title: '没有上一个单词了',
        icon: 'none'
      });
    }
  },
  
  // 下一个单词
  nextWord: function() {
    // 从本地存储获取单词
    const existingWords = JSON.parse(wx.getStorageSync('wordsToStudy') || '[]')
    // 先判断是否还有下一个单词
    if (this.data.currentWordIndex < existingWords.length - 1) {
      this.resetState();
      const idx = this.data.currentWordIndex + 1;
      this.setData({
        currentWordIndex: idx,
        currentWord: existingWords[idx]
      })
    } else {
      wx.showToast({
        title: '正在导入下一组单词，请稍等',
        icon: 'none'
      });
      this.getWordsToStudyFuc();
    }
  },
  
  // 重置状态
  resetState: function() {
    this.setData({
      showTranslation: false,
      showExample: false
    });
  },
  
  // 标记为已掌握
  markAsMastered: function() {
    this.studyWordFuc();
  },

  // 标记已掌握后刷新界面数据
  refreshDataAfterStudy: function() {
    // 需要在本地储存todayWordCount中加1
    // 从本地存储获取今日学习单词数量
    let todayWordCount = wx.getStorageSync('todayWordCount');
    todayWordCount = todayWordCount || 0;
    todayWordCount++;
    // 保存到本地存储
    wx.setStorageSync('todayWordCount', todayWordCount);
    // 更新首页数据
    const indexPage = getCurrentPages()[0];
    if (indexPage) {
      console.log(indexPage);
      // 调用首页的方法更新数据
      indexPage.updateTodayWordCount(todayWordCount);
      // 调用首页的方法计算进度
      indexPage.calculateProgress();
    }
    // 刷新当前单词
    const existingWords = JSON.parse(wx.getStorageSync('wordsToStudy') || '[]')
    // 从existingWords中去掉当前单词
    existingWords.splice(this.data.currentWordIndex, 1);
    // 将existingWords保存回Storage
    wx.setStorageSync('wordsToStudy', JSON.stringify(existingWords));
    // 先判断是否还有下一个单词
    if (this.data.currentWordIndex < existingWords.length) {
      this.resetState();
      this.setData({
        currentWord: existingWords[this.data.currentWordIndex]
      })
    } else {
      wx.showToast({
        title: '正在导入下一组单词，请稍等',
        icon: 'none'
      });
      this.getWordsToStudyFuc();
    }
  }
});